#include <iostream> 
using namespace std;
const int B=1000,X = 7;
int count[B+1];//count[i]表示支付i元所需支付的最少的钱币数量
int coint[X];
int change[B+1];//表示count[i]在取最小值时的选择,也就是j 
int dp_count(int o)//使用动态规划得出支付方式 
{
int i = 0;
int j = 0; 
for(i=0;i<B+1;i++)
count[i]=0xffff;
count[0]=0;
for(i=0;i<=o;i++)  //时间复杂度为O（n） 
{
for(j=0;j<X;j++)
if(coint[j]<= i && count[i-coint[j]]+1 < count[i])
{
count[i] = count[i-coint[j]]+1;
change[i] = coint[j];
}
}
return count[o];
}
void print(int p) //输出支付钱的张数 
{
if(p==0)
return;
else
{
print(p-change[p]);
}
}
int main()
{
int i=0;
int o;
for(i=0;i<X;i++)
cin>>coint[i];   //空间复杂度为O（N） 
cin >> o;
cout<<dp_count(o)<<endl;
print(o);
return 0;
}